package org.lc.stk.service.baseInfo;

import java.util.List;

import org.lc.stk.model.baseInfo.Major;
import org.lc.stk.web.dto.major.CreateMajorRequest;
import org.lc.stk.web.dto.major.MajorQuery;
import org.lc.stk.web.dto.major.UpdateMajorRequest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface MajorService {
    
    /**
     * 创建专业
     */
    Major create(CreateMajorRequest request);
    
    /**
     * 更新专业
     */
    Major update(UpdateMajorRequest request);
    
    /**
     * 删除专业
     */
    void delete(Integer id);
    
    /**
     * 根据ID获取专业
     */
    Major getById(Integer id);
    
    /**
     * 获取所有启用的专业
     */
    List<Major> listEnabled();
    
    /**
     * 分页查询专业
     */
    Page<Major> query(MajorQuery query, Pageable pageable);
    
    /**
     * 检查编码是否存在
     */
    boolean isCodeExists(String code, Integer excludeId);
    
    /**
     * 检查名称是否存在
     */
    boolean isNameExists(String name, Integer excludeId);

    /**
     * 批量切换专业启用状态
     */
    void toggleEnabled(List<Integer> ids, boolean enabled);
}